"""
文件基本操作
    mode
        r：读（纯文本）
            read(): 读取所有内容
            readline()：每次读取一行内容
            readlines()：读取所有的行保存的列表
            readable()：判断是否有可读的
        w：写（纯文本）
            write()
            writelines():自己加换行
            注意：
                写操作write(s),每次都会清空原来的内容清空，写当前的内容
        rb：读二进制（图片、视频、音乐等）
        wb：写二进制（）
    opr:
        open(path/fileName,mode='rt')   默认是gbk编码方式；decode       返回是流对象
            如果传递文件名有误，抛异常 FileNotFoundError

"""
print("读文件".center(20, "*"))
# 读取文本

stream = open(file=r'f:\test.txt', encoding='utf8')

# line = stream.readline()
# print(line)  #
# content = stream.read()
# print(content)

flag = stream.readable()
print(flag)

# while True:
#     line = stream.readline()
#     print(line)
#     if not line:
#         break


lines = stream.readlines()
print(lines)
# 读取binary文件：图片
stream = open(file=r'f:\test.jpg', mode='rb')
pic = stream.read()
print(pic)
stream.close()

print("写文件".center(20, "*"))

stream = open(file=r'f:\test.txt', mode='w', encoding='utf8')
s = '''
统一代码管理
	统一代码管理 GitLib，是基于 Git 的代码管理平台，数十万企业正在使用，提供代码托管、代码评审、代码扫描、质量检测、持续集成等功能，全方位保护企业代码资产，帮助公司实现安全、稳定、高效的代码托管和研发管理。
统一开发工具
	”工欲善其事，必先利其器“，统一开发工具为流程中的每一步提效交付更迅捷
统一规范标准
	”车同轨，书同文“，统一规范标准为研发人员必须遵循的最低规范要求，无论什么产品，什么项目，都必须得严格遵守。
统一平台及技术栈
	统一平台及技术栈解决不统一带来的开发效率问题，系统维护成本显著增加，统一技术选型，降低团队学习成本；完善技术生态，技术方案提取和复用，提高开发效率。
统一组件库
	组件是对数据和方法的简单封装，随着开发与设计、策划、产品等岗位的密切协作，为了统一沟通语言，设计、产品等岗位也在广泛的使用组件这一概念。统一组件库可以提升工作能效和开发质量。
'''
result = stream.write(s)  # 返回写了几个字符
print(result)

result = stream.write('hello world!')
result = stream.write(' 张三')
result = stream.writelines(["你好吗?\n", '一起去吃饭可以，有时间\n'])
print(result)
stream.close()

print("写文件：不清空！".center(20, "*"))
stream = open(file=r'f:\test.txt', mode='a', encoding='utf8')

result = stream.write("新增")
print(result)

